#pragma once

#include <bhttpclient/client.h>

class huawei
{
public:
    explicit huawei();

    void start();

    void test_get();
    // [GET]登录，获取Token
    void login();
    // [PUT]刷新Token
    void refresh();
    // [DEL]退出登录, 注销Token
    void loginout();
    // [POST]查找会议列表
    void search_conferences();
    // [POST]创建会议
    //void create_conference(const std::vector<std::shared_ptr<hwroom>>& rooms, create_conference_callback cb);
    // [DEL]结束会议
    //void end_conference(const std::string& confernce_id);
    // [POST]加入会议
    //void join_conference(const std::string& confernce_id, const std::shared_ptr<hwroom> room, std::function<void(int code, const std::string msg)> cb);
    // [DEL]离开会议
    //void leave_conference(const std::string& confernce_id, const std::string& acc_no);
    // [POST]查询会场列表
    //void search_participants(const std::string& confernce_id);
private:
    // 心跳线程函数
    //void heart_thrd_func();
    // 获取Token结果
    void handle_login(const bhttp::request_ptr& req, const bhttp::response_ptr& rep);
    // 刷新Token结果
    void handle_refresh(const bhttp::request_ptr& req, const bhttp::response_ptr& rep);
    // 注销Token结果
    void handle_loginout(const bhttp::request_ptr& req, const bhttp::response_ptr& rep);
    // 查找会议列表结果
    void handle_search_conferences(const bhttp::request_ptr& req, const bhttp::response_ptr& rep);
    // 创建会议结果
    //void handle_create_conference(const bhttp::request_ptr& req, const bhttp::response_ptr& rep);
    // 结束会议结果
    //void handle_end_conference(const bhttp::request_ptr& req, const bhttp::response_ptr& rep);
private:
    // Tokens[GET ?clientType=portal 获取][PUT ?grantType=refresh 刷新][DEL 注销]
    const std::string itokens = "/conf-portal/tokens";
    // 创建会议
    const std::string icreatecfs = "/conf-portal/conferences";
    // 控制会议
    const std::string ictrlcfs = "/conf-portal/online/conferences/";
private:
    std::string token_;
    std::shared_ptr<bhttp::client> httpclient_;
};

